package br.com.boreo.boreoapp_orcamento.dao;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.boreo.boreoapp_orcamento.model.EstoqueLote;

public class EstoquesLoteDAO {
	private BoreoAppOrcamentoDAO boreodao;
	/*Dados da tabela*/
	private static final String NOME_TABELA = "estoque_lote";
	private static final String ID_PRODUTO = "id_produto";
	private static final String ID_LOJA = "id_loja";
	private static final String ID_LOTE = "id_lote";
	private static final String EST_VENDA = "est_venda";
	private static final String EST_VENDIDO = "est_vendido";
	
	public EstoquesLoteDAO(Context context) {
		boreodao = BoreoAppOrcamentoDAO.getInstance(context);
	}

	public long inserir(int id_produto, int id_loja, int id_lote, double est_venda, double est_vendido) {
		ContentValues valores = new ContentValues();
	    valores.put(ID_PRODUTO, id_produto);
	    valores.put(ID_LOJA, id_loja);
	    valores.put(ID_LOTE, id_lote);
	    valores.put(EST_VENDA, est_venda);
	    valores.put(EST_VENDIDO, est_vendido);
	    
	    long retorno = boreodao.getWritableDatabase().insert(NOME_TABELA, null, valores);
	    boreodao.close();
    	return retorno;
	}

	public long inserirComId(int id_produto, int id_loja, int id_lote, double est_venda, double est_vendido) {
		ContentValues valores = new ContentValues();
		valores.put(ID_PRODUTO, id_produto);
	    valores.put(ID_LOJA, id_loja);
	    valores.put(ID_LOTE, id_lote);
	    valores.put(EST_VENDA, est_venda);
	    valores.put(EST_VENDIDO, est_vendido);
	    
	    long retorno = boreodao.getWritableDatabase().insert(NOME_TABELA, null, valores);
	    boreodao.close();
    	return retorno;
	}

	public long alterar(int id_produto, int id_loja, int id_lote, double est_venda, double est_vendido) {
		ContentValues valores = new ContentValues();
	    valores.put(EST_VENDA, est_venda);
	    valores.put(EST_VENDIDO, est_vendido);
	    
    	String[] whereAgrs = {Integer.toString(id_produto), Integer.toString(id_loja), Integer.toString(id_lote)};
    	int retorno = boreodao.getWritableDatabase().update(NOME_TABELA, valores, ID_PRODUTO+" = ? AND "+ID_LOJA+" = ? AND "+ID_LOTE+" = ?", whereAgrs);
    	boreodao.close();
    	return retorno;
	}

	public ArrayList<EstoqueLote> selectEstoquesLote() {
		ArrayList<EstoqueLote> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" ORDER BY "+ID_PRODUTO+", "+ID_LOJA+", "+ID_LOTE, null));
		boreodao.close();
		return c;
	}

	public ArrayList<EstoqueLote> selectEstoquesLotePorId(int id_produto, int id_loja, int id_lote) {
		ArrayList<EstoqueLote> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" WHERE "+ID_PRODUTO+" = "+id_produto+" AND "+ID_LOJA+" = "+id_loja+" AND "+ID_LOTE+" = "+id_lote+" ORDER BY "+ID_PRODUTO+", "+ID_LOJA+", "+ID_LOTE, null));
		boreodao.close();
		return c;
	}

	public ArrayList<EstoqueLote> selectEstoquesLotePorLote(int id_lote) {
		ArrayList<EstoqueLote> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" WHERE "+ID_LOTE+" = "+id_lote+" ORDER BY "+ID_PRODUTO+", "+ID_LOJA+", "+ID_LOTE, null));
		boreodao.close();
		return c;
	}
	public void excluirTodosEstoquesLote() {
		boreodao.getReadableDatabase().delete(NOME_TABELA, null, null);
	}

	private ArrayList<EstoqueLote> cursorToArray(Cursor c){
		ArrayList<EstoqueLote> produtosLote = new ArrayList<EstoqueLote>();
		while (c.moveToNext()) {
			produtosLote.add(new EstoqueLote(c.getInt(0), c.getInt(1), c.getInt(2), c.getInt(3), c.getDouble(4), c.getDouble(5)));
		}
		return produtosLote;
	}
}
